﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Reflection;

namespace Entity.Base
{
    /// <summary>
    /// Lớp ảo,trừu tượng hoá một bản ghi thực thể dữ liệu (DataObject).
    /// </summary>
    [Serializable]
    public abstract class DTOBase
    {
        protected Hashtable _HashTableIsNull;

        public DTOBase()
        {
            _HashTableIsNull = new Hashtable();

            Type tInstance = this.GetType();

            PropertyInfo[] arrProps = tInstance.GetProperties();
            foreach (PropertyInfo oProp in arrProps)
            {
                _HashTableIsNull.Add(oProp.Name, true);
            }
        }

        /// <summary>
        /// Kiểm tra xem giá trị của trường có null không
        /// </summary>
        public bool IsNull(string _sFieldName)
        {
            return (bool)_HashTableIsNull[_sFieldName];
        }

        /// <summary>
        /// Ghi giá trị null vào trường này trong CSDL
        /// </summary>
        public void SetNull(string _sFieldName)
        {
            _HashTableIsNull[_sFieldName] = true;
        }
        /// <summary>
        /// Lay ten truong khoa co gia tri tu tang
        /// </summary>
        public virtual string GetIdentityField()
        {
            return string.Empty;
        }
    }
}
